home *** CD-ROM | disk | FTP | other *** search
/ Delphi Informant Complete 1995 - 2000 / Delphi Informant Complete 1995 to 2000.iso / Delphi Informant Magazine Complete Works SOURCE CODE 1995.rar / 1995 / DEC / DI9512DH / mdiframe.pas < prev    next >
Pascal/Delphi Source File  |  1995-10-25  |  5KB  |  171 lines

  1. unit MDIFrame;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, Classes, Graphics, Controls, Printers,
  6.   Menus, MDIEdit, Dialogs, Forms, IniFiles;
  7.  
  8. type
  9.   TFrameForm = class(TForm)
  10.     OpenFileDialog: TOpenDialog;
  11.     MainMenu1: TMainMenu;
  12.     Open1: TMenuItem;
  13.     Window1: TMenuItem;
  14.     Tile1: TMenuItem;
  15.     Cascade1: TMenuItem;
  16.     ArrangeIcons1: TMenuItem;
  17.     Separator3: TMenuItem;
  18.     MRUSeparator: TMenuItem;
  19.     MRU1: TMenuItem;
  20.     MRU2: TMenuItem;
  21.     MRU3: TMenuItem;
  22.     MRU4: TMenuItem;
  23.     procedure NewChild(Sender: TObject);
  24.     procedure OpenChild(Sender: TObject);
  25.     procedure Exit1Click(Sender: TObject);
  26.     procedure Tile1Click(Sender: TObject);
  27.     procedure Cascade1Click(Sender: TObject);
  28.     procedure ArrangeIcons1Click(Sender: TObject);
  29.     procedure FormCreate(Sender: TObject);
  30.     procedure FormDestroy(Sender: TObject);
  31.     procedure MRUUpdate(Sender: TObject; const AddFilename: String);
  32.     procedure MRUDisplay(Sender: TObject);
  33.     procedure MRUOpenChild(Sender: TObject);
  34.  
  35.   public
  36.     MRUList: TStringList;    {Declare MRUList StringList variable}
  37. end;
  38.  
  39. var
  40.   FrameForm: TFrameForm;
  41.  
  42. implementation
  43.  
  44. uses SysUtils;
  45.  
  46. {$R *.DFM}
  47.  
  48. procedure TFrameForm.NewChild(Sender: TObject);
  49. var
  50.   EditForm: TEditForm;
  51. begin
  52.   EditForm := TEditForm.Create(Application);
  53.   EditForm.Show;
  54. end;
  55.  
  56. procedure TFrameForm.OpenChild(Sender: TObject);
  57. var
  58.   EditForm: TEditForm;
  59. begin
  60.   if OpenFileDialog.Execute then
  61.   begin
  62.     EditForm := TEditForm.Create(Self);
  63.     EditForm.Open(OpenFileDialog.Filename);
  64.     EditForm.Show;
  65.     EditForm.MRUDisplay(Sender);             {Update MRU menu items}
  66.   end;
  67.  
  68. end;
  69.  
  70. procedure TFrameForm.Exit1Click(Sender: TObject);
  71. begin
  72.   Close;
  73. end;
  74.  
  75. procedure TFrameForm.Tile1Click(Sender: TObject);
  76. begin
  77.   Tile;
  78. end;
  79.  
  80. procedure TFrameForm.Cascade1Click(Sender: TObject);
  81. begin
  82.   Cascade;
  83. end;
  84.  
  85. procedure TFrameForm.ArrangeIcons1Click(Sender: TObject);
  86. begin
  87.   ArrangeIcons;
  88. end;
  89.  
  90. procedure TFrameForm.FormCreate(Sender: TObject);
  91. var
  92.   AppIni: TIniFile;                     {Declare INI File variable}
  93.   Index: Integer;
  94. begin
  95.   MRUList := TStringList.Create;        {Create MRUList}
  96.   AppIni:= TIniFile.Create('TEXTEDIT.INI');       {Create IniFile}
  97.   for Index := 0 to 3 do                {Loop to read all 4 items from Ini}
  98.     MRUList.Add(AppIni.ReadString('MRU', IntToStr(Index), ''));
  99.  AppIni.Free;                           {Free IniFile variable}
  100.  
  101.   MRUDisplay(Sender);                    {Update MRU menu items}
  102. end;
  103.  
  104. procedure TFrameForm.FormDestroy(Sender: TObject);
  105. var
  106.   AppIni: TIniFile;                      {Delare IniFile variable}
  107.   Index: Integer;
  108. begin
  109.   AppIni := TIniFile.Create('TEXTEDIT.INI');       {Create IniFile}
  110.   for Index := 0 to 3 do                 {Loop to write all 4 items to Ini}
  111.     AppIni.WriteString('MRU', IntToStr(Index), MRUList[Index]);    {Save MRUList}
  112.   AppIni.Free;
  113.  
  114. end;
  115.  
  116. procedure TFrameForm.MRUUpdate(Sender: TObject;
  117.                                const AddFileName: string);
  118. var
  119.   Index: Integer;   { Declare index variable }
  120. begin
  121.   Index := 0;
  122.   { Compare AddFileName to MRUList items }
  123.   while Index < (MRUList.count - 1) do
  124.     if AddFileName = MRUList[Index] then
  125.       { If already there, delete each occurrence }
  126.       MRUList.delete(Index)
  127.     else
  128.       { If not, update Index and try next item }
  129.       Index := Index + 1;
  130.   while MRUList.count > 3 do
  131.     MRUList.delete(MRUList.Count - 1);
  132.   while MRUList.count < 3 do
  133.     { Keep MRUList }
  134.     MRUList.add('');
  135.   { Then add fourth item to the top }
  136.   MRUList.Insert(0,AddFilename);
  137. end;
  138.  
  139. procedure TFrameForm.MRUDisplay(Sender: TObject);
  140. begin
  141.   MRU1.Caption := '&1 ' + MRUList[0];           {Set MRU menu item caption}
  142.   MRU1.Visible := (MRUList[0] <> '');           {Visible if not blank}
  143.   MRUSeparator.Visible := (MRUList[0] <> '');   {Seperator vis. if not blank}
  144.   MRU2.Caption := '&2 ' + MRUList[1];
  145.   MRU2.Visible := (MRUList[1] <> '');
  146.   MRU3.Caption := '&3 ' + MRUList[2];
  147.   MRU3.Visible := (MRUList[2] <> '');
  148.   MRU4.Caption := '&4 ' + MRUList[3];
  149.   MRU4.Visible := (MRUList[3] <> '');
  150. end;
  151.  
  152. procedure TFrameForm.MRUOpenChild(Sender: TObject);
  153.           {Mimmics OpenChild, uses MRU item instead of Open Dialog}
  154. var
  155.   EditForm: TEditForm;
  156.   Index: Integer;
  157. begin
  158.   Index := TMenuItem(Sender).Tag;               {Set Index using Sender.Tag}
  159.   if MRUList[Index] <> '' then
  160.     begin
  161.       EditForm := TEditForm.Create(Self);
  162.       EditForm.open(MRUList[Index]);
  163.       EditForm.show;
  164.       EditForm.MRUDisplay(Sender);              {Update MRU menu items}
  165.     end;
  166. end;
  167. end.
  168.  
  169.  
  170.  
  171.